#include <iostream>
using namespace std;

class Base1{
public:
    Base1(int i){cout<<"Constructing Base1 "<<i<<endl;}
    ~Base1(){cout<<"Base1 deleting..."<<endl;}
};
class Base2{
public:
    Base2(int i){cout<<"Constructing Base2 "<<i<<endl;}
    ~Base2(){cout<<"Base2 deleting..."<<endl;}
};
class Base3{
public:
    Base3(){cout<<"Constructing Base3 *"<<endl;}
    ~Base3(){cout<<"Base3 deleting..."<<'*'<<endl;}
};
class Derived: public Base2,public Base1,public Base3{
public:
    Derived(int a, int b, int c, int d): Base1(a),m2(d),m1(c),Base2(b){}
    ~Derived(){cout<<"Derived deleting..."<<endl;}
private:
    Base1 m1;
    Base2 m2;
    Base3 m3;
};
int main() {
    Derived obj(1,2,3,4);
    return 0;
}
